"""
打开百度
搜索: 懂车帝
进入: 懂车帝官网


selenium 可使用等待有三种 :
    1.  强制等待  time.sleep()
    2.  隐式等待  driver.implicitly_wait()
    3.  显示等待  比较多


--> 强制等待
        阻塞线程 , Python 内置的 , 除非必要条件下 , 一般不用 . (比如网络差)
--> 隐式等待
        初始化 driver 时 , 一般会设置隐式等待 , 相当于是一个最大的等待时间 .
        隐式等待会自动轮询(默认0.5s)查找元素 , 最终没找到则抛出异常 .
        隐式等待是全局的 , 因此不太灵活 , 有的等待需要长 , 有的等待需要短 , 隐式等待就不太适用 .
--> 显示等待
        在代码中定义条件 , 当条件发生时才继续执行代码 .
        WebDriverWait 配合 until() 和 until_not()方法根据判断的条件进行等待 .
        程序每隔一段时间 , 进行条件判断 , 如果条件成立则执行下一步 , 否则继续等待直到超出最大时间 .


这段代码中使用了:
    强制等待
    隐式等待
"""
import pytest
from selenium.webdriver.common.by import By
from basic.s1_pytest_base import TestBase


class TestDongCheDi(TestBase):

    @pytest.mark.parametrize(argnames='url, keyword', argvalues=[['http://www.baidu.com', '懂车帝'], ])
    def test_oo1(self, url, keyword):
        # 隐式等待:
        self.driver.implicitly_wait(2)

        # 打开浏览器 , 访问 baidu 首页:
        self.driver.get(url)
        # 定位搜索框 , 输入 懂车帝 , 懂车帝 由参数传入:
        self.driver.find_element(value='kw').send_keys(keyword)
        # 定位 百度一下 按钮并点击:
        self.driver.find_element(value='su').click()
        # 定位 懂车帝 - 说真的还得懂车帝 的链接 , 并点击:
        self.driver.find_element(By.LINK_TEXT, '懂车帝 - 说真的还得懂车帝').click()
